﻿/*
 * ========================================================================
 * <copyright> 
        company="广西南宁索骏科技有限公司"  2020-2030 
        path="Orleans.Grains.SessionControlGrain" 
 * </copyright>
 * ========================================================================
 * 机器名称：QTWL-20170319HL 
 * 文件名：  SessionControlGrain 
 * 版本号：  V1.0.0.0 
 * 创建人：  Administrator 
 * 创建时间： 2020/9/15 20:56:14 
 * 描述    :
 * =====================================================================
 * 修改时间：2020/9/15 20:56:14 
 * 修改人  ： Administrator
 * 版本号  ： V1.0.0.0 
 * 描述    ：
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace Orleans.Grains
{
  public  class SessionControlGrain : Grain, ISessionControlGrain
    {
         private List<string> LoginUsers { get; set; } = new List<string>();

        public Task Login(string userId)
        {
            //获取当前Grain的身份标识(因为ISessionControlGrain身份标识为string类型，GetPrimaryKeyString());
            var appName = this.GetPrimaryKeyString();
            LoginUsers.Add(userId);
            Console.WriteLine($"Current active users count of {appName} is {LoginUsers.Count}");
            return Task.CompletedTask;
        }
        public Task Logout(string userId)
        {
            //获取当前Grain的身份标识
            var appName = this.GetPrimaryKey();
            LoginUsers.Remove(userId);
            Console.WriteLine($"Current active users count of {appName} is {LoginUsers.Count}");
            return Task.CompletedTask;
        }
        public Task<int> GetActiveUserCount()
        {
            return Task.FromResult(LoginUsers.Count);
        }

    }
}
